package org.lex.ftp.queue;

import java.util.Iterator;

public interface ITransferQueue extends Iterable<Task> {
	// get
	public Task getFirst();

	public Task getTask(int index);

	public boolean isEmpty();

	public Iterator<Task> iterator();

	// add
	public <T extends Task> void addLast(T... tasks);

	public <T extends Task> void addFirst(T... tasks);

	// etit
	public void moveTop(int index);

	public void moveUp(int index);

	public void moveDown(int index);

	public void moveBottom(int index);

	// remove
	public Task removeFirst();

	public void remove(int[] rows);

	public void clear();

	// fire
	public void fireQueueChanged(int index);

	public void fireQueueChanged();
}
